ããã³ããšã³ãã®ãããã¯ãã§ãŒã³ã¬ã¹æšå®ã«é¢ããå æ¬çã¬ã€ããå¹ççã§ãŠãŒã¶ãŒãã¬ã³ããªãŒãªåæ£åã¢ããªã±ãŒã·ã§ã³ïŒdAppsïŒãæ§ç¯ããããã®éèŠæ§ãæè¡ã課é¡ããã¹ããã©ã¯ãã£ã¹ã解説ããŸãã
ããã³ããšã³ãã®ãããã¯ãã§ãŒã³ã¬ã¹æšå®ïŒãã©ã³ã¶ã¯ã·ã§ã³ã³ã¹ãäºæž¬ã®ç¿åŸ
ãããã¯ãã§ãŒã³ã®äžçãç¹ã«ã€ãŒãµãªã¢ã ãšã³ã·ã¹ãã ããã®ä»ã®EVMäºæãã§ãŒã³ã«ãããŠããã©ã³ã¶ã¯ã·ã§ã³ã³ã¹ãã®çè§£ãšç®¡çã¯æ¥µããŠéèŠã§ãããããã®ã³ã¹ãã¯ãã°ãã°ãã¬ã¹ããšåŒã°ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã忣åã¢ããªã±ãŒã·ã§ã³ïŒdAppsïŒã®å šäœçãªåç¶å¯èœæ§ã«çŽæ¥åœ±é¿ãäžããŸããããã³ããšã³ãã®ã¬ã¹æšå®ã¯ããŠãŒã¶ãŒããã©ã³ã¶ã¯ã·ã§ã³ãéå§ããåã«ãéæã§äºæž¬å¯èœãªã³ã¹ãæ å ±ãæäŸããäžã§æ¥µããŠéèŠãªåœ¹å²ãæãããŸãããã®ã¬ã€ãã§ã¯ãããã³ããšã³ãã®ãããã¯ãã§ãŒã³ã¬ã¹æšå®ã®è€éããæ¢ãããã®éèŠæ§ãæè¡ã課é¡ããã¹ããã©ã¯ãã£ã¹ã«ã€ããŠè§£èª¬ããŸãã
ãªãããã³ããšã³ãã®ã¬ã¹æšå®ã¯éèŠãªã®ãïŒ
ããã³ããšã³ãã®ã¬ã¹æšå®ãšã¯ããã©ã³ã¶ã¯ã·ã§ã³ããããã¯ãã§ãŒã³ã«éä¿¡ãããåã«ããã®èšç®ã³ã¹ããäºæž¬ããããã»ã¹ã§ããããã¯ããã€ãã®çç±ããéåžžã«éèŠã§ãïŒ
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒUXïŒïŒ ãŠãŒã¶ãŒã¯ãã©ã³ã¶ã¯ã·ã§ã³ã確å®ããåã«ãã©ããããã®è²»çšããããããç¥ãããã£ãŠããŸããäºæãã¬é«é¡ãªã¬ã¹ä»£ã¯ãäžæºãå©çšäžæ¢ã«ã€ãªããå¯èœæ§ããããŸããæ£ç¢ºãªèŠç©ãããæäŸããããšã§ããŠãŒã¶ãŒã¯æ å ±ã«åºã¥ããæææ±ºå®ãã§ããŸããäŸãã°ãã€ã³ããã·ã¢ã®ãŠãŒã¶ãŒãã«ãã¢çžåœã®ETHãééããã¬ã¹ä»£ãééé¡ããé«ãã£ããã·ã§ãã¯ãåããã§ããããåªããããã³ããšã³ãã®æšå®æ©èœãããã°ããããé²ãããšãã§ããŸãã
- ãã©ã³ã¶ã¯ã·ã§ã³æåçïŒ äžååãªã¬ã¹ãªãããã¯ãã©ã³ã¶ã¯ã·ã§ã³ã®å€±æãåŒãèµ·ããå¯èœæ§ããããŸããå¿ èŠãªã¬ã¹ãæšå®ããããšã§ãããã³ããšã³ãã¯é©åãªã¬ã¹ãªããããèªåçã«èšå®ãããã©ã³ã¶ã¯ã·ã§ã³ãæ£åžžã«å®è¡ãããå¯èœæ§ãé«ããŸãã
- ã»ãã¥ãªãã£ïŒ ã¬ã¹ãé©åã«æšå®ããããšã¯ãã¹ããŒãã³ã³ãã©ã¯ãã«å¯ŸãããµãŒãã¹æåŠïŒDoSïŒæ»æãé²ãã®ã«åœ¹ç«ã¡ãŸãããã©ã³ã¶ã¯ã·ã§ã³ãæ¶è²»ã§ããã¬ã¹ã®éãå¶éããããšã§ãéçºè ã¯ãªãœãŒã¹ãæ¯æžãããããšããæªæã®ããæ»æè ããã³ã³ãã©ã¯ããä¿è·ã§ããŸãã
- ã³ã¹ãæé©åïŒ ã¬ã¹ä»£ãçè§£ããããšã§ããŠãŒã¶ãŒã¯ãã©ã³ã¶ã¯ã·ã§ã³ãæé©åã§ããŸããäŸãã°ããããã¯ãŒã¯ã®æ··éãå°ãªãæé垯ã«ãã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ããããšãéžæããã¬ã¹ä»£ãäœãæããããšãã§ããŸããçµæžãäžå®å®ãªã¢ã«ãŒã³ãã³ã®ãããªåœã§ã¯ãã¬ã¹ä»£ã®ããããªç¯çŽã§ã倧ããªæå³ãæã€ããšããããŸãã
- éææ§ïŒ ãã©ã³ã¶ã¯ã·ã§ã³ã³ã¹ããã©ã®ããã«èšç®ããããã瀺ãããšã§ããŠãŒã¶ãŒãšã®ä¿¡é Œãç¯ããŸããç·ã³ã¹ãã«å¯äžããèŠçŽ ã®å èš³ãæç¢ºã«æäŸããããšã§ããŠãŒã¶ãŒã«æš©éãäžããdAppãžã®ä¿¡é Œãè²ã¿ãŸãã
ãããã¯ãã§ãŒã³ã«ãããã¬ã¹ã®çè§£
ã¬ã¹ãšã¯äœãïŒ
ã¬ã¹ãšã¯ãã¹ããŒãã³ã³ãã©ã¯ãã®ãããã€ãããŒã¯ã³ã®è»¢éãªã©ããããã¯ãã§ãŒã³äžã§ç¹å®ã®æäœãå®è¡ããããã«å¿ èŠãªèšç®éãå®éåããæž¬å®åäœã§ããåæäœãããªãã¡ããªãã³ãŒããã«ã¯ãé¢é£ããã¬ã¹ä»£ããããŸããæäœãè€éã«ãªãã»ã©ãããå€ãã®ã¬ã¹ãæ¶è²»ããŸãã
ã¬ã¹ãªããããšã¬ã¹äŸ¡æ Œ
ãã©ã³ã¶ã¯ã·ã§ã³ã®ç·ã³ã¹ããå®çŸ©ãã2ã€ã®äž»èŠãªãã©ã¡ãŒã¿ããããŸãïŒ
- ã¬ã¹ãªãããïŒ ãŠãŒã¶ãŒããã©ã³ã¶ã¯ã·ã§ã³ã«è²»ãããŠããããšèããã¬ã¹ã®æå€§éããã©ã³ã¶ã¯ã·ã§ã³ããªããã以äžã®ã¬ã¹ãå¿ èŠãšããå Žåãããã¯å€±æãããŠãŒã¶ãŒã¯ãã®æç¹ãŸã§ã«æ¶è²»ãããã¬ã¹ä»£ãæ¯æãããšã«ãªããŸãã
- ã¬ã¹äŸ¡æ ŒïŒ ã¬ã¹åäœãããã®äŸ¡æ Œã§ãéåžžã¯GweiïŒETHã®å°æ°åäœïŒã§è¡šãããŸãããŠãŒã¶ãŒã¯ã¬ã¹äŸ¡æ Œã調æŽããŠããã©ã³ã¶ã¯ã·ã§ã³ãã©ãã ãéãåŠçããããã«åœ±é¿ãäžããããšãã§ããŸããããé«ãã¬ã¹äŸ¡æ Œã¯ããã€ããŒã«ãã®ãã©ã³ã¶ã¯ã·ã§ã³ãåªå ãããã€ã³ã»ã³ãã£ããäžããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³ã®ç·ææ°æã¯æ¬¡ã®ããã«èšç®ãããŸãïŒ äœ¿çšã¬ã¹é * ã¬ã¹äŸ¡æ Œã
åºæ¬ææ°æãšåªå ææ°æïŒEIP-1559ïŒ
ã€ãŒãµãªã¢ã ã®EIP-1559ã§ã¯ããããã¯ãŒã¯ã®æ··éç¶æ³ã«åºã¥ããŠã¢ã«ãŽãªãºã çã«æ±ºå®ãããåºæ¬ææ°æãå°å
¥ãããŠããŸãããã®åºæ¬ææ°æã¯ããŒã³ïŒçŒåŽïŒãããå®è³ªçã«ETHã埪ç°ããåãé€ããŸãããŠãŒã¶ãŒã¯ãŸãããã€ããŒã«èªåã®ãã©ã³ã¶ã¯ã·ã§ã³ããããã¯ã«å«ããããã€ã³ã»ã³ãã£ããäžããããã®ãåªå
ææ°æãïŒãããïŒãå«ããããšãã§ããŸããEIP-1559ã®äžã§ã®ç·ææ°æã¯æ¬¡ã®ããã«ãªããŸãïŒ äœ¿çšã¬ã¹é * (åºæ¬ææ°æ + åªå
ææ°æ)ã
ããã³ããšã³ãã§ã®ã¬ã¹æšå®æè¡
ããã³ããšã³ãã§ã¬ã¹ä»£ãæšå®ããããã«ãããã€ãã®æè¡ãçšããããŸãïŒ
1. éçã¬ã¹æšå®
ãã®ã¢ãããŒãã¯ãç¹å®ã®ã³ã³ãã©ã¯ã颿°ã«å¯ŸããŠäºåã«å®çŸ©ãããã¬ã¹ä»£ã«äŸåããŸãããããã®ã³ã¹ãã¯ãã¹ããŒãã³ã³ãã©ã¯ãã®ã³ãŒããåæããåæäœã®ã¬ã¹æ¶è²»éãç¹å®ããããšã«ãã£ãŠæ±ºå®ãããŸãã
å©ç¹ïŒ
- å®è£ ãç°¡åã
- é«éã§å¹ççã
æ¬ ç¹ïŒ
- å®è¡ãã¹ãå€åããè€éãªãã©ã³ã¶ã¯ã·ã§ã³ã«ã¯äžæ£ç¢ºã
- ã¹ããŒãã³ã³ãã©ã¯ãã³ãŒãã®æååæãå¿ èŠã
- åçã«çæããããã©ã³ã¶ã¯ã·ã§ã³ã«ã¯äžåãã
äŸïŒ åçŽãªããŒã¯ã³è»¢éãåžžã«21,000ã¬ã¹ããããšããã£ãŠããå Žåããã®å€ãããã³ããšã³ãã«ããŒãã³ãŒãããããšãã§ããŸãã
2. RPCããŒã¹ã®ã¬ã¹æšå®ïŒeth_estimateGasïŒ
ã€ãŒãµãªã¢ã ã¯ã©ã€ã¢ã³ãïŒäŸïŒGeth, BesuïŒãæäŸããeth_estimateGasã¡ãœããã䜿çšãããšãéçºè
ã¯ãã©ã³ã¶ã¯ã·ã§ã³ãã·ãã¥ã¬ãŒãããŠããã®å®è¡ã«å¿
èŠãªã¬ã¹ã決å®ã§ããŸããããã¯éçæšå®ãããåçã§æ£ç¢ºãªã¢ãããŒãã§ãã
ä»çµã¿ïŒ
- ããã³ããšã³ãã¯ãå¿
èŠãªãã¹ãŠã®ãã©ã¡ãŒã¿ïŒ
to,from,dataãªã©ïŒãå«ããã©ã³ã¶ã¯ã·ã§ã³ãªããžã§ã¯ããæ§ç¯ããŸãã - ãã©ã³ã¶ã¯ã·ã§ã³ãªããžã§ã¯ãã¯ã
eth_estimateGasRPCã¡ãœãããä»ããŠã€ãŒãµãªã¢ã ã¯ã©ã€ã¢ã³ãã«éä¿¡ãããŸãã - ã¯ã©ã€ã¢ã³ãã¯ãã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ãã·ãã¥ã¬ãŒãããæšå®ã¬ã¹å€ãè¿ããŸãã
ã³ãŒãäŸïŒethers.jsã䜿çšïŒïŒ
const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();
const contract = new ethers.Contract(contractAddress, contractABI, signer);
const transaction = {
to: contractAddress,
data: contract.interface.encodeFunctionData("myFunction", [arg1, arg2]),
from: signer.getAddress()
};
try {
const gasEstimate = await provider.estimateGas(transaction);
console.log("æšå®ã¬ã¹:", gasEstimate.toString());
} catch (error) {
console.error("ã¬ã¹æšå®ãšã©ãŒ:", error);
}
å©ç¹ïŒ
- éçæšå®ãããæ£ç¢ºã
- å€åãããããã¯ãŒã¯ç¶æ³ãã¹ããŒãã³ã³ãã©ã¯ãã®ããžãã¯ã«åçã«é©å¿ã
- web3.jsãethers.jsã©ã€ãã©ãªã䜿çšããŠæ¯èŒçç°¡åã«å®è£ å¯èœã
æ¬ ç¹ïŒ
- ç¹ã«è€éãªãã©ã³ã¶ã¯ã·ã§ã³ã§ã¯ãèšç®ã³ã¹ããé«ããªãå¯èœæ§ãããã
- å®éã®å®è¡æã®ãããã¯ç¶æ ã®å€åã«ãããå®å šã«ã¯æ£ç¢ºã§ãªãå Žåãããã
- ä¿¡é Œã§ããã€ãŒãµãªã¢ã ã¯ã©ã€ã¢ã³ãã«äŸåããã
3. ã¬ã¹ãªãããã®ãããã¡ãªã³ã°
æ£ç¢ºãªã¬ã¹æšå®ãè¡ã£ããšããŠããäºæãã¬äºæ ã«åããŠæšå®ã¬ã¹ãªãããã«ãããã¡ã远å ããããšãè³¢æã§ãããã®ãããã¡ã¯åºå®ã®å²åïŒäŸïŒ10%ïŒã«ããããšããéå»ã®ãã©ã³ã¶ã¯ã·ã§ã³ããŒã¿ã«åºã¥ããŠåçãªå€ã«ããããšãã§ããŸãã
äŸïŒ eth_estimateGasã100,000ãšããå€ãè¿ããå Žåããã©ã³ã¶ã¯ã·ã§ã³ã確å®ã«æåããããã«ã¬ã¹ãªãããã110,000ã«å¢ãããããããŸããã
ã³ãŒãäŸïŒ
const gasEstimate = await provider.estimateGas(transaction);
const gasLimit = gasEstimate.mul(110).div(100); // 10%ã®ãããã¡ã远å
transaction.gasLimit = gasLimit;
4. ãµãŒãããŒãã£ã®ã¬ã¹äŸ¡æ ŒAPIã®å©çš
ãŠãŒã¶ãŒã«æãç«¶äºåã®ããã¬ã¹äŸ¡æ ŒãæäŸããããã«ããµãŒãããŒãã£ã®ã¬ã¹äŸ¡æ ŒAPIãšçµ±åããŸãããããã®APIã¯ãªã¢ã«ã¿ã€ã ã®ãããã¯ãŒã¯ããŒã¿ãéçŽããé«éãæšæºãäœéã®ã¬ã¹äŸ¡æ Œã®æšå¥šãæäŸããŸããäŸãšããŠã¯ãGasNowãEtherscan Gas TrackerãBlocknative Gas Platformãªã©ããããŸãããããã®ãµãŒãã¹ã®äžéšã¯ããã¹ãŠã®ãã§ãŒã³ã§å©çšå¯èœãŸãã¯æ£ç¢ºã§ã¯ãªãå Žåãããããšã«æ³šæããŠãã ããã
äŸïŒ ãã€ãžã§ãªã¢ã®ãŠãŒã¶ãŒã¯ã䜿çšããAPIã«ãã£ãŠç°ãªãã¬ã¹äŸ¡æ Œãç®ã«ããå¯èœæ§ããããããä¿¡é Œæ§ãé«ãææ°ã®ãµãŒãã¹ãéžæããããšãéèŠã§ãã
ã³ãŒãäŸïŒæ¶ç©ºã®APIã䜿çšïŒïŒ
async function getGasPrices() {
const response = await fetch('https://api.example.com/gasPrices');
const data = await response.json();
return data;
}
const gasPrices = await getGasPrices();
const maxPriorityFeePerGas = ethers.utils.parseUnits(gasPrices.fast.maxPriorityFeePerGas, 'gwei');
const maxFeePerGas = ethers.utils.parseUnits(gasPrices.fast.maxFeePerGas, 'gwei');
transaction.maxPriorityFeePerGas = maxPriorityFeePerGas;
transaction.maxFeePerGas = maxFeePerGas;
5. ã·ãã¥ã¬ãŒã·ã§ã³ã«ãããã©ã³ã¶ã¯ã·ã§ã³å®è¡
ããã·ã§ã³ã¯ãªãã£ã«ã«ãªãã©ã³ã¶ã¯ã·ã§ã³ã«ã€ããŠã¯ãã¡ã€ã³ãããã«éä¿¡ããåã«ãããŒã«ã«ãŸãã¯ãã¹ããããã¯ãŒã¯ã§ãã©ã³ã¶ã¯ã·ã§ã³å®è¡ãããŒå šäœãã·ãã¥ã¬ãŒãããããšãæ€èšããŠãã ãããããã«ãããæãæ£ç¢ºãªã¬ã¹æšå®ãåŸãããæœåšçãªåé¡ãè匱æ§ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸããHardhatãGanacheã®ãããªããŒã«ã¯ãããŒã«ã«ãããã¯ãã§ãŒã³ç°å¢ã®ã»ããã¢ããã«åœ¹ç«ã¡ãŸãã
ããã³ããšã³ãã¬ã¹æšå®ã®èª²é¡
äžèšã§èª¬æããæè¡ã¯ã¬ã¹æšå®ã®ç²ŸåºŠãå€§å¹ ã«åäžãããããšãã§ããŸãããããã€ãã®èª²é¡ãæ®ã£ãŠããŸãïŒ
- åçãªã¹ããŒãã³ã³ãã©ã¯ãããžãã¯ïŒ ã¹ããŒãã³ã³ãã©ã¯ãã«ã¯ãå ¥åããŒã¿ãå€éšã®ç¶æ ã«äŸåããå®è¡ãã¹ãæã€è€éãªããžãã¯ãå«ãŸããããšããããŸããããã«ãããèãããããã¹ãŠã®ã·ããªãªã§ã¬ã¹ä»£ãæ£ç¢ºã«äºæž¬ããããšãå°é£ã«ãªããŸãã
- ãããã¯ãŒã¯ã®æ··éïŒ ã¬ã¹äŸ¡æ Œã¯ãããã¯ãŒã¯ã®æ··éç¶æ³ã«å¿ããŠå€åããŸããã¬ã¹äŸ¡æ Œãæ£ç¢ºã«æšå®ããã«ã¯ããªã¢ã«ã¿ã€ã ã®ãããã¯ãŒã¯ããŒã¿ãšäºæž¬ã¢ãã«ãå¿ èŠã§ãã
- ç¶æ ã®å€åïŒ ãã©ã³ã¶ã¯ã·ã§ã³ãæšå®ãããŠããå®è¡ããããŸã§ã®éã«ããããã¯ãã§ãŒã³ã®ç¶æ ãå€åããå¯èœæ§ããããŸããããã¯ãã©ã³ã¶ã¯ã·ã§ã³ã®ã¬ã¹æ¶è²»ã«åœ±é¿ãäžããããšããããŸãã
- EIP-1559ã®è€éãïŒ EIP-1559ã®å°å ¥ã«ãããã¬ã¹æšå®ã¯ããã«è€éã«ãªããŸãããããã³ããšã³ãã¯ãã¬ã¹ãªããããšã¬ã¹äŸ¡æ Œã«å ããŠãåºæ¬ææ°æãšåªå ææ°æãèæ ®ããå¿ èŠããããŸãã
- ã¯ãã¹ãã§ãŒã³ãã©ã³ã¶ã¯ã·ã§ã³ïŒ è€æ°ã®ãããã¯ãã§ãŒã³ãšçžäºäœçšãããã©ã³ã¶ã¯ã·ã§ã³ïŒäŸïŒããªããžçµç±ïŒã®ã¬ã¹ãæšå®ããããšã¯ãåãã§ãŒã³ã®ã¬ã¹ã¡ã«ãã¯ã¹ã®ç¥èãå¿ èŠãšããã¯ããã«è€éã§ãã
- MEVïŒãã€ããŒæœåºå¯èœäŸ¡å€ïŒïŒ MEVãããã¯ãã©ã³ã¶ã¯ã·ã§ã³ãããã³ãã©ã³ãŸãã¯ããã¯ã©ã³ããããšãããããããã¯ãã§ãŒã³ã®ç¶æ ã倿Žããã¬ã¹æšå®ãç¡å¹ã«ããå¯èœæ§ããããŸãããŠãŒã¶ãŒãMEVããä¿è·ããã«ã¯ãé«åºŠãªæè¡ãå¿ èŠã§ãã
ããã³ããšã³ãã¬ã¹æšå®ã®ãã¹ããã©ã¯ãã£ã¹
ãããã®èª²é¡ã軜æžããä¿¡é Œæ§ã®é«ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«ã以äžã®ãã¹ããã©ã¯ãã£ã¹ã«åŸã£ãŠãã ããïŒ
- è€æ°ã®æè¡ã®çµã¿åããïŒ éçåæãRPCããŒã¹ã®æšå®ãã¬ã¹äŸ¡æ ŒAPIãçµã¿åãããŠãæãæ£ç¢ºãªçµæãåŸãŸãã
- ã¬ã¹ãªãããã®ãããã¡ãªã³ã°ã®å®è£ ïŒ åžžã«æšå®ã¬ã¹ãªãããã«ãããã¡ã远å ããŠãäºæãã¬äºæ ã«åããŸãã
- ãŠãŒã¶ãŒã³ã³ãããŒã«ã®æäŸïŒ ãŠãŒã¶ãŒãã¬ã¹ãªããããšã¬ã¹äŸ¡æ Œãæåã§èª¿æŽã§ããããã«ããŸããããã«ããããã©ã³ã¶ã¯ã·ã§ã³ã®ã³ã¹ããšé床ã«å¯Ÿããå¶åŸ¡ãåäžããŸããã€ã³ãã®ãŠãŒã¶ãŒã¯ãé床ãããã³ã¹ããåªå ããããããããŸããã
- ãªã¢ã«ã¿ã€ã ã®ã¬ã¹äŸ¡æ Œã®è¡šç€ºïŒ ã¬ã¹äŸ¡æ ŒAPIãšçµ±åããŠããªã¢ã«ã¿ã€ã ã®ã¬ã¹äŸ¡æ ŒããŠãŒã¶ãŒã«è¡šç€ºããŸããé«éãæšæºãäœéã®ã¬ã¹ãªãã·ã§ã³ã®æšå¥šãæäŸããŸãã
- ãã©ã³ã¶ã¯ã·ã§ã³æåçã®ç£èŠïŒ ãã©ã³ã¶ã¯ã·ã§ã³ã®æåçã远跡ããããã«å¿ããŠã¬ã¹æšå®ãã©ã¡ãŒã¿ã調æŽããŸããããã«ãããæœåšçãªåé¡ãç¹å®ãã察åŠããã®ã«åœ¹ç«ã¡ãŸãã
- ãšã©ãŒãã³ããªã³ã°ã®å®è£ ïŒ ã¬ã¹æšå®ã倱æããå Žåãããã©ã³ã¶ã¯ã·ã§ã³ãã¬ã¹åãã«ãªã£ãå Žåã«ãæçãªãšã©ãŒã¡ãã»ãŒãžãæäŸããŸãã
- ã³ãŒãã®å®æçãªæŽæ°ïŒ ãããã¯ãã§ãŒã³æè¡ã¯çµ¶ããé²åããŠããŸããææ°ã®éçºç¶æ³ãææ¡ããããã«å¿ããŠã³ãŒããæŽæ°ããŸãã
- Metamaskã®æšå¥šã¬ã¹æéã®äœ¿çšãæ€èšïŒ Metamaskã¯ãç¬èªã®å éšã¢ã«ãŽãªãºã ãšãããã¯ãŒã¯ç£èŠããå°ãåºãããã劥åœãªã¬ã¹æéã®ææ¡ããã°ãã°æäŸããŸããããããå©çšããããšã§ãè¯ãåºçºç¹ãåŸãããŸãã
- ãŠãŒã¶ãŒæè²ïŒ ã¬ã¹ãã¬ã¹ãªããããã¬ã¹äŸ¡æ Œã«ã€ããŠãæç¢ºã§ç°¡æœãªèª¬æãæäŸããŸãããŠãŒã¶ãŒããã©ã³ã¶ã¯ã·ã§ã³ã³ã¹ãã®èšç®æ¹æ³ããã©ã³ã¶ã¯ã·ã§ã³ã®æé©åæ¹æ³ãçè§£ããã®ãå©ããŸãã
- 培åºçãªãã¹ãïŒ ç°ãªããããã¯ãŒã¯ïŒã¡ã€ã³ãããããã¹ããããïŒã§ãããŸããŸãªçš®é¡ã®ãã©ã³ã¶ã¯ã·ã§ã³ã䜿çšããŠãã¬ã¹æšå®ããžãã¯ããã¹ãããŸããHardhatãTruffleãªã©ã®ããŒã«ã䜿çšããŠãã¹ããèªååããŸãã
ããã³ããšã³ãã©ã€ãã©ãªãšããŒã«
ããã€ãã®ã©ã€ãã©ãªãšããŒã«ããããã³ããšã³ãã®ã¬ã¹æšå®ããã»ã¹ãç°¡çŽ åããŸãïŒ
- ethers.jsïŒ ã€ãŒãµãªã¢ã ãšå¯Ÿè©±ããããã®å æ¬çãªJavaScriptã©ã€ãã©ãªãã¬ã¹ã®æšå®ããã©ã³ã¶ã¯ã·ã§ã³ã®éä¿¡ãã¹ããŒãã³ã³ãã©ã¯ããšã®å¯Ÿè©±ã®ããã®äœ¿ããããæ©èœãæäŸããŸãã
- web3.jsïŒ ã€ãŒãµãªã¢ã ãšå¯Ÿè©±ããããã®ãã1ã€ã®äººæ°ã®ããJavaScriptã©ã€ãã©ãªãethers.jsãšåæ§ã®æ©èœãæäŸããŸãã
- HardhatïŒ ã€ãŒãµãªã¢ã ãœãããŠã§ã¢ã®ããã®éçºç°å¢ãã¹ããŒãã³ã³ãã©ã¯ãã®ã³ã³ãã€ã«ããã¹ãããããã€ã®ããã®ããŒã«ãæäŸããŸãã
- TruffleïŒ ã€ãŒãµãªã¢ã ã®ããã®éçºã¹ã€ãŒããHardhatã«äŒŒãŠããŸãããç°ãªãæ©èœã»ãããšã¯ãŒã¯ãããŒãæã£ãŠããŸãã
- GanacheïŒ ã€ãŒãµãªã¢ã éçºçšã®ããŒãœãã«ãããã¯ãã§ãŒã³ãéçºè ããã¹ããå®éšã®ããã«ããŒã«ã«ãããã¯ãã§ãŒã³ç°å¢ãè¿ éãã€ç°¡åã«ã»ããã¢ããã§ããããã«ããŸãã
- Blocknative Gas PlatformïŒ ãªã¢ã«ã¿ã€ã ã®ã¬ã¹äŸ¡æ ŒããŒã¿ãšãã©ã³ã¶ã¯ã·ã§ã³ã·ãã¥ã¬ãŒã·ã§ã³æ©èœãæäŸãããµãŒãã¹ã
ããã³ããšã³ãã¬ã¹æšå®ã®æªæ¥
ãããã¯ãã§ãŒã³æè¡ãé²åãç¶ããã«ã€ããŠãããã³ããšã³ãã®ã¬ã¹æšå®ã¯ããã«éèŠã«ãªããŸããå°æ¥ã®ãã¬ã³ãã¯æ¬¡ã®ãšããã§ãïŒ
- ããæŽç·Žãããæšå®ã¢ã«ãŽãªãºã ïŒ é«åºŠãªæ©æ¢°åŠç¿æè¡ããã¬ã¹ä»£ãããæ£ç¢ºã«äºæž¬ããããã«äœ¿çšãããã§ãããã
- ã¬ã€ã€ãŒ2ã¹ã±ãŒãªã³ã°ãœãªã¥ãŒã·ã§ã³ãšã®çµ±åïŒ ããã³ããšã³ãã¯ãOptimismãArbitrumãzkSyncãªã©ã®ã¬ã€ã€ãŒ2ãããã¯ãŒã¯äžã®ãã©ã³ã¶ã¯ã·ã§ã³ã®ã¬ã¹ä»£ãæšå®ããå¿ èŠããããŸãã
- ã¯ãã¹ãã§ãŒã³ãã©ã³ã¶ã¯ã·ã§ã³ã®ãµããŒãïŒ ããã³ããšã³ãã¯ãè€æ°ã®ãããã¯ãã§ãŒã³ãšçžäºäœçšãããã©ã³ã¶ã¯ã·ã§ã³ã®ã¬ã¹æšå®ã®è€éããåŠçããå¿ èŠããããŸãã
- æ¹åããããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ïŒ ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã¯ããçŽæçã§ãŠãŒã¶ãŒãã¬ã³ããªãŒã«ãªãããŠãŒã¶ãŒããã©ã³ã¶ã¯ã·ã§ã³ã³ã¹ããçè§£ã管çãããããªããŸãã
- èªåã¬ã¹æé©åïŒ ããã³ããšã³ãã¯ã代æ¿ã®ãã©ã³ã¶ã¯ã·ã§ã³ãã©ã¡ãŒã¿ãå®è¡ãã¹ãææ¡ããããšã«ãããã¬ã¹äœ¿çšéãèªåçã«æé©åããŸãã
çµè«
ããã³ããšã³ãã®ãããã¯ãã§ãŒã³ã¬ã¹æšå®ã¯ããŠãŒã¶ãŒãã¬ã³ããªãŒã§å¹ççãªdAppsãæ§ç¯ããããã®éèŠãªèŠçŽ ã§ããé¢é£ããæè¡ãšèª²é¡ãçè§£ããããšã§ãéçºè ã¯ãŠãŒã¶ãŒã«éæã§äºæž¬å¯èœãªã³ã¹ãæ å ±ãæäŸãããã©ã³ã¶ã¯ã·ã§ã³ã®æåçãé«ããå šäœçãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããšãã§ããŸãããããã¯ãã§ãŒã³æè¡ãé²åãç¶ããäžã§ãããã³ããšã³ãã®ã¬ã¹æšå®ãç¿åŸããããšã¯ã忣åã®äžçã§æåããããã«ããã«äžå¯æ¬ ã«ãªãã§ããããdAppsã«ã¬ã¹æšå®ãå®è£ ããéã«ã¯ãåžžã«ã»ãã¥ãªãã£ãéææ§ããŠãŒã¶ãŒæè²ãåªå ããããšãå¿ããªãã§ãã ããã